package com.bms.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.apache.commons.lang.StringUtils;

import com.bms.utils.FileUtil;
import com.bms.utils.Function;

/**
 * 实体类：从FTP获取下来的站点（应用）文件
 * 
 * @author Lan
 */
@Entity
@Table(name = "T_FILE")
public class AppFile extends BaseEntity {

	private static final long serialVersionUID = -3986362014807517622L;

	private String filePath;// 包括文件名的文件绝对路径
	private Integer fileStatus;// 文件状态：1待初审文件，2待二审文件，3待三审文件
	private String appEngName;// 文件所属应用的英文缩写
	private String senstWords;// 敏感字审核时，审核该文件是否包含敏感字，空：无敏感字
	private Boolean needDel;// 文件操作：false-需要新增或更新的文件（上传至FTP）,true-需要删除的文件（FTP删除文件，本地目录删除文件）
	private String publishFailID;//发布失败的服务器ID，用|分隔
	
	private String fileName;

	/**
	 * @return 包括文件名的文件绝对路径
	 */
	@Column(nullable = false, length = 500)
	public String getFilePath() {
		return filePath;
	}

	/**
	 * @param filePath
	 *            包括文件名的文件绝对路径
	 */
	public void setFilePath(String filePath) {
		this.filePath = filePath;
	}

	/**
	 * @return 文件状态：1待初审文件，2待二审文件，3待三审文件，4待发布的文件，当发布成功后即删除该记录
	 */
	@Column(length = 5)
	public Integer getFileStatus() {
		return fileStatus;
	}

	/**
	 * @param fileStatus
	 *            文件状态：1待初审文件，2待二审文件，3待三审文件，4待发布的文件，当发布成功后即删除该记录
	 */
	public void setFileStatus(Integer fileStatus) {
		this.fileStatus = fileStatus;
	}

	/**
	 * @return 文件所属的应用的名称
	 */
	@Column(length = 20)
	public String getAppEngName() {
		return appEngName;
	}

	/**
	 * @param appEngName
	 *            文件所属的应用的名称
	 */
	public void setAppEngName(String appEngName) {
		this.appEngName = appEngName;
	}

	/**
	 * @return 敏感字审核时，审核该文件是否包含敏感字，空：无敏感字
	 */
	@Column(length = 4000)
	public String getSenstWords() {
		return senstWords;
	}

	/**
	 * @param senstWords
	 *            敏感字审核时，审核该文件是否包含敏感字，空：无敏感字
	 */
	public void setSenstWords(String senstWords) {
		this.senstWords = senstWords;
	}

	/**
	 * @author Lan
	 * @return false-需要新增或更新的文件（上传至FTP）,true-需要删除的文件（FTP删除文件，本地目录删除文件）
	 */
	@Column
	public Boolean getNeedDel() {
		return needDel;
	}

	/**
	 * @author Lan
	 * @param needDel
	 *            false-需要新增或更新的文件（上传至FTP）,true-需要删除的文件（FTP删除文件，本地目录删除文件）
	 */
	public void setNeedDel(Boolean needDel) {
		this.needDel = needDel;
	}

	/**
	 * @return the fileName
	 */
	@Transient
	public String getFileName() {
		if(StringUtils.isBlank(fileName))
			fileName = FileUtil.getName(Function.getFileRootDir(1) + getFilePath());
		return fileName;
	}

	/**
	 * @param fileName
	 *            the fileName to set
	 */
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public String getPublishFailID() {
		return publishFailID;
	}

	public void setPublishFailID(String publishFailID) {
		this.publishFailID = publishFailID;
	}

}
